画布 1
设备管理
  设备管理概述
    分类
      存储设备
      输入输出设备
      通信设备
    特征
      速度差异大
      传输单位不同
      容许的操作种类不同
      出错条件不同
    目标
      提高设备利用率
      方便用户使用
    设备管理功能
      状态追踪
      设备分配和回收
        静态分配
          程序进入系统的时候就进行分配,退出系统的时候回收全部资源
        动态分配
          进程提出设备申请的时候仅从分配,使用完毕立即收回
      设备控制
    设备独立性
      用户在程序中使用的设备与实际使用的设备无关,也就是说在用户程序中,只使用逻辑设备名.
      逻辑设备名
        用户自己指定的设备名,可以更改
      物理设备名
        系统提供的设备的标准名称,是永久的,可以更改的
      系统可以根据设备的使用情况,动态地分配给程序中某类设备中的任一一台物理设备,程序都可以正确运行.
        也就是说,程序使用一个逻辑设备,这个逻辑设备和不同的物理设备绑定,都可以正常工作.运行途中逻辑设备A无论和物理设备B和还是物理设备C绑定都不会影响程序运行
      在输入/输出信息的时候,信息可以从不同类型的设备上输入输出
    设备控制块
      记录设备的硬件特性,连接和使用情况的一组数据
      设备名
      设备属性
      命令转换表
        包括特定的I/O例程地址,能表示设备能执行何种I/O操作
  缓冲技术
    定义
      两种不同速度的设备之间传输信息的平滑传输过程.
    为什么要缓冲?
      处理数据流生产者与消费者速度差异
      协调传输数据大小不一致的设备
      应用程序拷贝语义(什么玩意?)
    单缓冲操作
      读设备得数据
        首先获得一个空的缓冲区
        设备会把物理记录(数据[从设备来的])送到缓冲区中
        用户请求数据时,系统将依据逻辑记录特性从缓冲区提取数据 并 发送到用户进程存储区
        如果用户请求数据缓冲区又没有怎么办?等待!
      写数据到设备
        首先获得一个空的缓冲区
        将一个逻辑记录(数据[从应用来的])从进程存储区送到缓冲区中
        如果缓冲区写满了,系统将缓冲区内容作为物理记录写到设备上.
        缓冲区还是满,进程企图输出信息的时候,它需要等待
    双缓冲操作
      两个缓冲区
      数据输入
        输入设备首先填满buf1
        进程从buf1提取数据的时候,输入设备填满buf2.当缓冲区一个空,一个满的时候就可以交换.
        总的来说,就是进程提取一个缓冲区,设备往另外一个缓冲区输入数据,如此循环往复.
      数据输出
        首先进程填满buf1
        设备从buf1提取数据时候,进程就往buf2输出数据,当缓冲区一个空,一个满的时候就交换.
    环形缓冲
      缓冲区构成一个环形链表,有读指针和写指针,读写元素分别从读指针和写指针写数据
    UNIX缓冲区管理
      组成
        缓存数组
        缓存首部
          设备号,使用该缓冲区的设备号
          块号
          指向数据区域的指针
          b链和av链的指针
        队列结构
          与某类设备有关的所有缓冲区称为设备缓冲区队列,简称b链.
          空闲缓冲区组成的队列称为空闲缓冲区队列,简称av链
      缓冲管理算法
        当一块buf被分配用于读/写某设备时:从av链链首部上取下来,放入b链中.
        读写结束后,留在b链上,送入av链链尾
        进程需要的信息在buf中:在这个设备的b链上找到,然后从av链摘除,进程在读取完buf内部的信息之后,又送入av链链尾.
      预先缓存
        用户进程要读数据,磁盘先把数据送入到高速缓存中,接着用户进程从高速缓存读取数据
      延迟发送
        用户进程要写数据,用户进程先把数据送入到高速缓存中,磁盘从高速缓存中读取数据
  设备分配
    分配原则
      静态分配:在作业载入的时候就把所有这个作业需要的资源
      动态分配:在作业(或进程)运行的过程中,需要设备时系统根据某种分配原则分配
    分配算法
      先来先服务
      优先级高者优先
    分配策略
      独享分配:分配独享设备:在一个作业整个运行期间占用的设备
      共享分配:分配多个作业、进程共同使用的共享设备
      虚拟分配
        所谓虚拟技术，是在一类物理设备上模拟另一类物理设备的技术，是将独占设备转化为共享设备的技术。
        通常把用来代替独占型设备的那部分外存空间 (包括有关的控制表格)称为虚拟设备。
        进程先把元素写入位于磁盘中的虚拟设备
        然后虚拟设备分配管理器再把磁盘中的虚拟设备数据写入物理设备
      SPOOLING(一种实例虚拟设备分配策略)
        预输入
          应用程序需要数据之前,OS已经把所需要的数据放入输入井中存放,应用程序可以直接从输入井获取数据
        缓输出
          应用程序执行的时候,将输出数据写入输出井中,当应用程序执行完毕后,OS将输出井的数据输出
        利用通道和中断技术，在主机控制之下，由通道完成输入输出工作。系统提供一个软件系统 (包括预输入程序、缓输出程序、井管理程序、预输入表、缓输出表)。它提供输入收存和输出发送的功能，使外部设备可以并行操作。这一软件系统称为SPOOLING系统。
        基础
          辅存空间
          通道和中断
          数据结构
          软件
            预输入,缓输出,井管理程序
  I/O控制
    输入输出控制方式(组原提到了/不表)
    I/O子系统
      在应用程序提供I/O应用接口
      每个通用设备类型都通过一组标准函数(以及接口)来访问.
    设备处理程序
      直接控制设备运转的程序,每一类设备都有一个设备处理程序,能同时控制同类多台设备工作
      取一个I/O请求块
      启动I/O操作,设备处理进程进入等待状态
      等待I/O操作完成,设备处理进程进入就绪状态
      设备处理进程重新运行,判断出错了吗?如果没有的话就唤醒请求此I/O操作的进程
    控制I/O模块的方式
      设备处理程序对应的设备处理进程
      将设备与文件一样对待
    I/O接口程序
      首先把逻辑设备转化为物理设备
      合法性检查,这个设备能否执行这个操作
      形成I/O请求块,发送给设备处理进程
    处理顺序
      用户进程请求IO
      首先进入I/O过程
      由I/O过程进入I/O处理进程
      I/O处理进程启动I/O设备进行I/O操作,进入等待状态
      I/O设备执行完I/O操作后进入中断唤醒I/O处理进程
      I/O处理进程则唤醒调用该I/O的用户进程
  构造
    用户进程
    I/O接口程序(I/O过程)
    I/O处理进程
    I/O设备I/O操作